Many providers of communication services employ one or more communication servers, such as remote access servers, access routers, and voice over IP gateways. The communication servers may act as modems, Fax handlers, voice over Internet Protocol (VoIP) servers and/or may provide any other communication services.
Some communication servers are multi-channel servers which have a capacity to concurrently handle a plurality of connections up to a predetermined maximal number. In addition, some communication servers, which are implemented mainly in software, for example, the servers of 3Com, Ascend, Access, ADI, Connexent, Telogy, and Hothaus, can concurrently handle different types of connections. Software based remote-access servers are generally implemented using a single processor, generally a signal processing processor such as a DSP, which is cheaper than a general purpose processor and is more suited for signal processing.
A multi-channel server, using a single processor, generally includes a scheduler which determines which channel is handled by the processor at any specific time. Usually, the channels are organized in a specific order and the processor, periodically, according to a scheduling cycle, provides a processing session to each of the channels in the specific order.
Different connections require processing time, i.e., handling of their received data, at different cycle times. For example, the ITU standard G723.1 connection requires handling of its data with a cycle of 30 milliseconds while the ITU standard G729A connection requires handling of its data with a 10 millisecond cycle. Some connections, e.g., modem and Fax connections, may operate over a large range of data rates and cycle times. All the channels must have their data processed during each cycle of their cycle time. A state in which a connection is not handled during one of its cycles is referred to as a starvation state. A connection which reaches a starvation state is generally disconnected or otherwise suffers from a degradation of service.
Some communication servers run on the processor an operating system which performs preemption. In such servers the scheduling of the processor to handle data from connections with different cycles may be lenient as the processor may interrupt the processing of data from one channel to handle data from another channel. Preemption, however, may require large percentages of the resources of the processor and therefore is wasteful.
Other communication servers limit themselves to connections which are processed with a single cycle time. Sometimes such servers are included in an array of servers each of which handles a different type of connections.
When a plurality of connections, which require handling of their data at different cycle times, are handled by the same server, the scheduler of the server chooses a longest scheduling cycle size of all the cycle times of the connections. Connections which require shorter cycle times are handled a plurality of time during each longest cycle rather than once during each of their own cycles. This, however, may involve degradation of the signals provided by the server for those connections, for example increasing their delay beyond allowed limits.